package com.arqui.admmon_module.client.gin;

import com.gwtplatform.mvp.client.gin.AbstractPresenterModule;
import com.gwtplatform.mvp.client.gin.DefaultModule;
import com.arqui.admmon_module.client.place.ClientPlaceManager;
import com.arqui.admmon_module.client.place.DefaultPlace;
import com.arqui.admmon_module.client.place.NameTokens;
import com.arqui.admmon_module.client.core.adm_brand.BrandAdmPresenter;
import com.arqui.admmon_module.client.core.adm_brand.BrandAdmView;
import com.arqui.admmon_module.client.core.adm_brand.BrandModPresenter;
import com.arqui.admmon_module.client.core.adm_brand.BrandModView;
import com.arqui.admmon_module.client.core.adm_brand.BrandPresenter;
import com.arqui.admmon_module.client.core.adm_brand.BrandView;
import com.arqui.admmon_module.client.core.adm_brand.EstablishmentModPresenter;
import com.arqui.admmon_module.client.core.adm_brand.EstablishmentModView;
import com.arqui.admmon_module.client.core.adm_brand.EstablishmentPresenter;
import com.arqui.admmon_module.client.core.adm_brand.EstablishmentView;
import com.arqui.admmon_module.client.core.adm_brand.UserAdmPresenter;
import com.arqui.admmon_module.client.core.adm_brand.UserAdmView;
import com.arqui.admmon_module.client.core.adm_brand.UserModPresenter;
import com.arqui.admmon_module.client.core.adm_brand.UserModView;
import com.arqui.admmon_module.client.core.adm_brand.UserPresenter;
import com.arqui.admmon_module.client.core.adm_brand.UserView;
import com.arqui.admmon_module.client.core.adm_syst.ActivityClusterPresenter;
import com.arqui.admmon_module.client.core.adm_syst.ActivityClusterView;
import com.arqui.admmon_module.client.core.main.HeaderPresenter;
import com.arqui.admmon_module.client.core.main.HeaderView;
import com.arqui.admmon_module.client.core.main.LoggingPresenter;
import com.arqui.admmon_module.client.core.main.LoggingView;
import com.arqui.admmon_module.client.core.main.MainPresenter;
import com.arqui.admmon_module.client.core.main.MainView;
import com.arqui.admmon_module.client.core.main.OptionPresenter;
import com.arqui.admmon_module.client.core.main.OptionView;
import com.arqui.admmon_module.client.core.main.EventsPresenter;
import com.arqui.admmon_module.client.core.main.EventsView;
import com.arqui.admmon_module.client.core.load.LoadPresenter;
import com.arqui.admmon_module.client.core.load.LoadView;
import com.arqui.admmon_module.client.core.services.ServicesPresenter;
import com.arqui.admmon_module.client.core.services.ServicesView;
import com.arqui.admmon_module.client.core.invalid.InvalidPresenter;
import com.arqui.admmon_module.client.core.invalid.InvalidView;
import com.arqui.admmon_module.client.core.load.RealTimeLoadPresenter;
import com.arqui.admmon_module.client.core.load.RealTimeLoadView;
import com.arqui.admmon_module.client.core.load.HistoricLoadPresenter;
import com.arqui.admmon_module.client.core.load.HistoricLoadView;
import com.arqui.admmon_module.client.core.services.RealTimeServicesPresenter;
import com.arqui.admmon_module.client.core.services.RealTimeServicesView;
import com.arqui.admmon_module.client.core.services.HistoricServicesPresenter;
import com.arqui.admmon_module.client.core.services.HistoricServicesView;
import com.arqui.admmon_module.client.core.invalid.SyntaxPresenter;
import com.arqui.admmon_module.client.core.invalid.SyntaxView;
import com.arqui.admmon_module.client.core.invalid.IdentificationPresenter;
import com.arqui.admmon_module.client.core.invalid.IdentificationView;
import com.arqui.admmon_module.client.core.invalid.CardPresenter;
import com.arqui.admmon_module.client.core.invalid.CardView;
import com.arqui.admmon_module.client.core.invalid.RealTimeCardPresenter;
import com.arqui.admmon_module.client.core.invalid.RealTimeCardView;
import com.arqui.admmon_module.client.core.invalid.HistoricCardPresenter;
import com.arqui.admmon_module.client.core.invalid.HistoricCardView;
import com.arqui.admmon_module.client.core.invalid.RealTimeSyntaxPresenter;
import com.arqui.admmon_module.client.core.invalid.RealTimeSyntaxView;
import com.arqui.admmon_module.client.core.invalid.HistoricSyntaxPresenter;
import com.arqui.admmon_module.client.core.invalid.HistoricSyntaxView;
import com.arqui.admmon_module.client.core.invalid.RealTimeIdentificationPresenter;
import com.arqui.admmon_module.client.core.invalid.RealTimeIdentificationView;
import com.arqui.admmon_module.client.core.invalid.HistoricIdentificationPresenter;
import com.arqui.admmon_module.client.core.invalid.HistoricIdentificationView;
import com.arqui.admmon_module.client.core.main.ErrorPresenter;
import com.arqui.admmon_module.client.core.main.ErrorView;
import com.arqui.admmon_module.client.place.ErrorPlace;

public class ClientModule extends AbstractPresenterModule {

	@Override
	protected void configure() {
		install(new DefaultModule(ClientPlaceManager.class));
		
		bindConstant().annotatedWith(DefaultPlace.class).to(NameTokens.logging);

		bindPresenter(LoggingPresenter.class, LoggingPresenter.MyView.class,
				LoggingView.class, LoggingPresenter.MyProxy.class);

		bindPresenter(MainPresenter.class, MainPresenter.MyView.class,
				MainView.class, MainPresenter.MyProxy.class);

		bindPresenter(HeaderPresenter.class, HeaderPresenter.MyView.class,
				HeaderView.class, HeaderPresenter.MyProxy.class);

		bindPresenter(OptionPresenter.class, OptionPresenter.MyView.class,
				OptionView.class, OptionPresenter.MyProxy.class);

		bindPresenter(ActivityClusterPresenter.class,
				ActivityClusterPresenter.MyView.class,
				ActivityClusterView.class,
				ActivityClusterPresenter.MyProxy.class);

		bindPresenter(BrandAdmPresenter.class, BrandAdmPresenter.MyView.class, BrandAdmView.class, BrandAdmPresenter.MyProxy.class);

		bindPresenter(BrandPresenter.class, BrandPresenter.MyView.class,
				BrandView.class, BrandPresenter.MyProxy.class);

		bindPresenter(BrandModPresenter.class, BrandModPresenter.MyView.class,
				BrandModView.class, BrandModPresenter.MyProxy.class);

		bindPresenter(EstablishmentPresenter.class,
				EstablishmentPresenter.MyView.class, EstablishmentView.class,
				EstablishmentPresenter.MyProxy.class);

		bindPresenter(EstablishmentModPresenter.class,
				EstablishmentModPresenter.MyView.class,
				EstablishmentModView.class,
				EstablishmentModPresenter.MyProxy.class);

		bindPresenter(UserPresenter.class,
				UserPresenter.MyView.class, UserView.class,
				UserPresenter.MyProxy.class);

		bindPresenter(UserModPresenter.class,
				UserModPresenter.MyView.class,
				UserModView.class,
				UserModPresenter.MyProxy.class);

		bindPresenter(UserAdmPresenter.class,
				UserAdmPresenter.MyView.class,
				UserAdmView.class,
				UserAdmPresenter.MyProxy.class);

		bindPresenter(EventsPresenter.class, EventsPresenter.MyView.class,
				EventsView.class, EventsPresenter.MyProxy.class);

		bindPresenter(LoadPresenter.class, LoadPresenter.MyView.class,
				LoadView.class, LoadPresenter.MyProxy.class);

		bindPresenter(ServicesPresenter.class, ServicesPresenter.MyView.class,
				ServicesView.class, ServicesPresenter.MyProxy.class);

		bindPresenter(InvalidPresenter.class, InvalidPresenter.MyView.class,
				InvalidView.class, InvalidPresenter.MyProxy.class);

		bindPresenter(RealTimeLoadPresenter.class,
				RealTimeLoadPresenter.MyView.class, RealTimeLoadView.class,
				RealTimeLoadPresenter.MyProxy.class);

		bindPresenter(HistoricLoadPresenter.class,
				HistoricLoadPresenter.MyView.class, HistoricLoadView.class,
				HistoricLoadPresenter.MyProxy.class);

		bindPresenter(RealTimeServicesPresenter.class,
				RealTimeServicesPresenter.MyView.class,
				RealTimeServicesView.class,
				RealTimeServicesPresenter.MyProxy.class);

		bindPresenter(HistoricServicesPresenter.class,
				HistoricServicesPresenter.MyView.class,
				HistoricServicesView.class,
				HistoricServicesPresenter.MyProxy.class);

		bindPresenter(SyntaxPresenter.class, SyntaxPresenter.MyView.class,
				SyntaxView.class, SyntaxPresenter.MyProxy.class);

		bindPresenter(IdentificationPresenter.class,
				IdentificationPresenter.MyView.class, IdentificationView.class,
				IdentificationPresenter.MyProxy.class);

		bindPresenter(CardPresenter.class, CardPresenter.MyView.class,
				CardView.class, CardPresenter.MyProxy.class);

		bindPresenter(RealTimeCardPresenter.class,
				RealTimeCardPresenter.MyView.class, RealTimeCardView.class,
				RealTimeCardPresenter.MyProxy.class);

		bindPresenter(HistoricCardPresenter.class,
				HistoricCardPresenter.MyView.class, HistoricCardView.class,
				HistoricCardPresenter.MyProxy.class);

		bindPresenter(RealTimeSyntaxPresenter.class,
				RealTimeSyntaxPresenter.MyView.class, RealTimeSyntaxView.class,
				RealTimeSyntaxPresenter.MyProxy.class);

		bindPresenter(HistoricSyntaxPresenter.class,
				HistoricSyntaxPresenter.MyView.class, HistoricSyntaxView.class,
				HistoricSyntaxPresenter.MyProxy.class);

		bindPresenter(RealTimeIdentificationPresenter.class,
				RealTimeIdentificationPresenter.MyView.class,
				RealTimeIdentificationView.class,
				RealTimeIdentificationPresenter.MyProxy.class);

		bindPresenter(HistoricIdentificationPresenter.class,
				HistoricIdentificationPresenter.MyView.class,
				HistoricIdentificationView.class,
				HistoricIdentificationPresenter.MyProxy.class);

		bindPresenter(ErrorPresenter.class, ErrorPresenter.MyView.class,
				ErrorView.class, ErrorPresenter.MyProxy.class);

		bindConstant().annotatedWith(ErrorPlace.class).to(NameTokens.error);
	}
}
